package com.base.interview.devtest.service;

import com.base.interview.devtest.model.dto.UserDTO;
import com.base.interview.devtest.model.dto.UserLoginDTO;
import com.base.interview.devtest.model.dto.UserLogoutDTO;
import com.base.interview.devtest.model.vo.UserLoginVO;
import com.base.interview.devtest.model.vo.UserVO;

import java.util.List;

public interface IUserService {
    UserVO register(UserDTO userDTO);

    UserLoginVO login(UserLoginDTO userLoginDTO);

    void logout(UserLogoutDTO userLogoutDTO);

    boolean follow(Long userId);

    boolean unfollow(Long userId);

    /**
     * retrieve the followers of user
     * @param userId
     * @return
     */
    List<UserVO> retrieveFollowers(Long userId);

    /**
     * retrieve the list user has followed
     * @param userId
     * @return
     */
    List<UserVO> retrieveFollowed(Long userId);

    String getUserName(Long userId);

    List<UserVO> search(String userName);
}
